//new type模式，绕过实现trait的泛型限制。（trait和类型至少一个在本地crate）

use std::fmt;

struct Wrapper(Vec<String>);
//间接给Vec类型实现Display trait。
impl fmt::Display for Wrapper {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "[{}]", self.0.join(", "))
    }
}
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test_new_type() {
        let w = Wrapper(vec![String::from("hello"), String::from("world")]);
        println!("w = {}", &w);
        assert_eq!(w.to_string(), "[hello, world]");
    }
}